package www.wmx.com.xssc.util.similarity;


import java.util.*;


public class ParagraphExtractor {



    public static List<String> extractParagraph(String context, String startTitle, String endTitle) {
        int startIndex = context.indexOf(startTitle);
        if (startIndex == -1) {
            throw new IllegalArgumentException("Start title not found in the context.");
        }

        // 跳过标题本身，找到下一个换行符的位置
        startIndex = context.indexOf('\n', startIndex);
        if (startIndex == -1) {
            // 如果没有找到换行符，则整个标题就是段落的内容（这通常不是预期行为，但根据原方法逻辑保留）
            startIndex = startTitle.length();
        } else {
            startIndex++; // 跳过换行符
        }

        int endIndex = context.indexOf(endTitle, startIndex);
        if (endIndex == -1) {
            // 如果没有找到结束标题，则提取到字符串末尾
            endIndex = context.length();
        } else {
            // 如果找到了结束标题，则不包含它，且需要回退一个字符（如果结束标题前是换行符的话）
            if (endIndex > 0 && context.charAt(endIndex - 1) == '\n') {
                endIndex--;
            }
        }

        // 提取段落内容
        String paragraph = context.substring(startIndex, endIndex).trim();

        // 使用split和join去除多余的空行
        String[] lines = paragraph.split("\\r?\\n"); // 匹配Unix和Windows的换行符
        List<String> nonEmptyLines = new ArrayList<>();
        for (String line : lines) {
            if (!line.trim().isEmpty()) { // 忽略空行
                nonEmptyLines.add(line.trim()); // 添加非空行到列表中
            }
        }
        return  nonEmptyLines;
        //return String.join("\n", nonEmptyLines); // 使用换行符连接非空行
    }

}